package net.dybai.glacier;

import java.util.Locale;

public class HexUtils {

    public static String toHexString(byte[] data) {
        StringBuffer buffer = new StringBuffer();
        for (byte b : data) {
            if ((b >= 0) && (b <= 0x0F)) {
                buffer.append("0");
            }
            // 由于 toHexString() 的参数是 int 类型，
            // 而此处 byte 应作为无符号数据处理，
            // 所以必须计算 byte & 0xFF 将其高位部分置为零，
            // 否则负数的补码高位部分也会被转换为十六进制字符串形式。
            buffer.append(Integer.toHexString(b & 0xFF));
        }
        return buffer.toString().toUpperCase(Locale.ROOT);
    }

}
